Software may be upgraded when new features need to be added to the software, when a database schema used by the software changes, when a process architecture used by the software changes, or for numerous other reasons. One method of performing a software upgrade is simply to shut down any equipment using an older version of the software, install a newer version, and restart the equipment. However, such an upgrade procedure may not be acceptable for software installed in high-reliability systems such as telecommunications switching equipment. To prevent service outages, such systems typically cannot be shut down for the length of time necessary to perform an upgrade in this manner.
For a high-reliability system, hardware and software redundancy may be in place, wherein two substantially identical sets of hardware and software operate simultaneously. This redundancy improves the reliability of the system since one set of hardware and software can continue to operate if the other fails. When a software upgrade is to be performed on a redundant system, a new version of the software can be installed on a first set of hardware while a second set of hardware continues to execute the old version. When the installation of the new version on the first set of hardware is complete, the new version can then be installed on the second set of hardware. In this way, software can be upgraded without any interruption in service. However, this procedure only applies to redundant systems, which can be expensive and difficult to operate and maintain.